---
title: 'Zoho'
sidebarTitle: 'Zoho'
description: 'Access the Zoho API in 2 minutes 💨'
---

import SetupGuide from "/snippets/zoho-shared/zoho-shared-setup-guide.mdx"


<Tabs>
  <Tab title="🚀 Quickstart">
    <Steps>
      <Step title="Create an integration">
        In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Zoho_.
      </Step>
      <Step title="Authorize Zoho">
        Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then log in to Zoho. Later, you'll let your users do the same directly from your app.
      </Step>
      <Step title="Call the Zoho API">
        Let's make your first request to the Zoho API (fetch a list of contacts). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
        <Tabs>
            <Tab title="cURL">
                ```bash
                curl "https://api.nango.dev/proxy/crm/v2/Contacts?per_page=10" \
                  -H "Authorization: Bearer <NANGO-SECRET-KEY>" \
                  -H "Provider-Config-Key: <INTEGRATION-ID>" \
                  -H "Connection-Id: <CONNECTION-ID>"
                ```
            </Tab>

            <Tab title="Node">

            Install Nango's backend SDK with `npm i @nangohq/node`. Then run:

            ```typescript
            import { Nango } from '@nangohq/node';

            const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

            const res = await nango.get({
                endpoint: '/crm/v2/Contacts',
                providerConfigKey: '<INTEGRATION-ID>',
                params: {
                  per_page: 10
                },
                connectionId: '<CONNECTION-ID>'
            });

            console.log(JSON.stringify(res.data.data, null, 2));
            ```
            </Tab>

        </Tabs>

        Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).

      </Step>
    </Steps>

    ✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.

    <Tip>
    Next step: [Embed the auth flow](/getting-started/quickstart/embed-in-your-app) in your app to let your users connect their Zoho accounts.
    </Tip>
  </Tab>
  <Tab title="🧑‍💻 OAuth app setup">
    
    <SetupGuide />
    
    ## Common Scopes

    | Scope | Description |
    | ----- | ----------- |
    | `AaaServer.profile.READ` | Read access to user profile |
  </Tab>
  <Tab title="🔗 Useful links">

    | Topic             | Links                                                                                                   |
    | ----------------- | ------------------------------------------------------------------------------------------------------- |
    | Authorization     | [Guide to connect to Zoho using Connect UI](/integrations/all/zoho/connect) |
    | General           | [Zoho API Console](https://api-console.zoho.com/)                                                       |
    |                   | [Zoho Website](https://www.zoho.com)                                                     |
    | Developer / OAuth | [OAuth 2.0 Overview](https://www.zoho.com/accounts/protocol/oauth.html)                                 |
    |                   | [Get Authorization Code](https://www.zoho.com/accounts/protocol/oauth/web-apps/authorization.html)      |
    |                   | [Get Access Token](https://www.zoho.com/accounts/protocol/oauth/web-apps/access-token.html)             |
    |                   | [Refresh Access Token](https://www.zoho.com/accounts/protocol/oauth/web-apps/access-token-expiry.html) |
    |                   | [Multi DC Support](https://www.zoho.com/accounts/protocol/oauth/multi-dc.html)                          |
    |                   | [OAuth Scopes](https://www.zoho.com/accounts/protocol/oauth/scope.html)                                 |
    | API               | [Zoho REST APIs](https://www.zoho.com/developer/rest-api.html)   

    <Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/zoho.mdx)</Note>
  </Tab>
  <Tab title="🚨 API gotchas">
    - Zoho offers multiple services, each with its own API. Have a look at the various services offered by Nango to integrate them independently. Each Zoho service has its own specific API endpoints and scopes. The OAuth setup process is similar across all Zoho services.
    - Zoho uses datacenter-specific URLs for authentication. Make sure to use the correct datacenter domain extension (`com`, `eu`, `in`, `com.cn`, `com.au`) based on where your user's account is registered.
    - Zoho has rate limits that vary by service. Check the specific service documentation for details.
    - If your application needs to access multiple Zoho services, you need to request scopes for each service during the authorization process.
    - For production applications, consider implementing [multi-datacenter support](https://www.zoho.com/accounts/protocol/oauth/multi-dc.html) to handle users from different regions.

    <Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/zoho.mdx)</Note>
  </Tab>
</Tabs>
<Info>
    Questions? Join us in the [Slack community](https://nango.dev/slack).
</Info>
